package VideoRent.Alquiler;

import java.util.*;

import VideoRent.Articulo.*;
import VideoRent.Cliente.*;

/**
 * Clase que representa una instancia particular del alquiler de un artículo
 * realizado por un cliente asociado
 */
public class Alquiler{
    //Fecha en que se alquiló el artículo
    private Calendar fechaAlquilada;
    //Fecha tope en que se debe devolver el artículo, antes de incurrir en multas
    private Calendar fechaMaximaRetorno;
    //Cliente que rentó el artículo
    private ClienteAsociado cliente;
    //Artículo rentado
    private Articulo articulo;
    //Multa que se debe cancelar al momento de la devolución
    private int multa;

    /**
     * Constructor de la clase
     * @param fechaAlquilada Fecha en que se alquiló el artículo
     * @param cliente Cliente que rentó el artículo
     * @param articulo Artículo rentado
     */
    public Alquiler(Calendar fechaAlquilada, ClienteAsociado cliente, Articulo articulo){
        this.fechaAlquilada = fechaAlquilada;
        this.fechaMaximaRetorno = (Calendar)fechaAlquilada.clone();
        this.fechaMaximaRetorno.add(Calendar.DAY_OF_MONTH, articulo.getDiasPrestamo());
        this.cliente = cliente;
        this.articulo = articulo;
    }

    //Lista de 'getters' para obtener los atributos de la clase

    public Calendar getFechaAlquilada(){return this.fechaAlquilada;}
    public Calendar getFechaMaximaRetorno(){return this.fechaMaximaRetorno;}
    public ClienteAsociado getCliente(){return this.cliente;}
    public Articulo getArticulo(){return this.articulo;}
    public int getMulta(){return this.multa;}

    //Lista de 'setters' para asignar los valores de los atributos de la clase

    public void setFechaAlquilada(Calendar a){this.fechaAlquilada = a;}
    public void setFechaMaximaRetorno(Calendar a){this.fechaMaximaRetorno = a;}
    public void setCliente(ClienteAsociado a){this.cliente = a;}
    public void setArticulo(Articulo a){this.articulo = a;}
    public void setMulta(int a){this.multa = a;}
}